<?php

namespace app\common\controller;

use think\Controller;


/**
 * 前台公共控制器
 */
class Home extends Controller
{
    /**
     * 
     * 不需要登录的方法 如果有不需要验证登录的方法 就把方法名写进去
     * 如果所有的方法都不用登录 就给*
     */
    public $NoLogin = [];

    protected $BusinessModel;

    protected $BusinessData;

    public function __construct()
    {
        parent::__construct();

        // 加载会员模型
        $this->BusinessModel = model('Business.Business');

        //当前访问控制器方法名
        $action = $this->request->action();

        $data = $this->queryBusiness();

        if ($data) {
            $this->view->assign('business', $data);
            $this->BusinessData = $data;
        }

        // 判断访问的控制器是否需要登录
        if (!in_array($action, $this->NoLogin) && !in_array('*', $this->NoLogin)) {
            $this->auth($data);
        }
    }

    protected function queryBusiness()
    {
        // 获取 cookie
        $cookie = cookie('business');

        // 取出id和mobile查询用户是否真实存在
        $id = isset($cookie['id']) ? trim($cookie['id']) : 0;
        $mobile = isset($cookie['mobile']) ? trim($cookie['mobile']) : '';

        // 查询用户是否存在
        $where = ['id' => $id, 'mobile' => $mobile];
        $data = $this->BusinessModel->where($where)->find();

        return $data;
    }

    public function auth($data, $redirect = true)
    {
        if (!$data) {
            // 没找到用户，说明 cookie伪造的，所以要删除
            cookie('business', null);

            if ($redirect) {
                $this->error('非法访问，请重新登录', url('home/index/login'));
                exit;
            } else {
                return null;
            }
        }

        return $data;
    }
}
